Multilevel cell flash memory includes floating gate transistors with programmable threshold voltages. When programming multilevel flash cells, care must be taken to store the right amount of charge on the floating gate so that the flash cells may later be reliably read.